unit unitpuesto;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  DBGrids, sqldb, db, unitmainform;

type

  { TFormPuesto }

  TFormPuesto = class(TForm)
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    SQLQuery1: TSQLQuery;
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem6Click(Sender: TObject);
    procedure MenuItem8Click(Sender: TObject);
    procedure MenuItem9Click(Sender: TObject);
    procedure ordenar_grid();
  private
    pst_nombre: string;
  public
    { public declarations }
  end;

var
  FormPuesto: TFormPuesto;

implementation

uses
  unitadminpuesto;
{$R *.lfm}

{ TFormPuesto }

procedure TFormPuesto.ordenar_grid();
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from puesto where pst_nombre ilike ''%' + pst_nombre + '%'' order by pst_nombre';

  SQLQuery1.Open;

  DBGrid1.Columns[0].Title.Caption := 'Codigo';
  DBGrid1.Columns[1].Title.Caption := 'Nombre del Puesto';
  DBGrid1.Columns[2].Title.Caption := 'Descripción del Puesto';

  DBGrid1.Columns[0].Width := 80;
  DBGrid1.Columns[1].width := 180;
  DBGrid1.Columns[2].width := 275;
end;

procedure TFormPuesto.MenuItem2Click(Sender: TObject);
begin
  Close();
end;

procedure TFormPuesto.MenuItem4Click(Sender: TObject);
begin
  FormAdminPuesto.Caption := 'Alta de Puesto';
  FormAdminPuesto.Button1.Caption := 'Guardar';
  FormAdminPuesto.ShowModal;
  ordenar_grid();
end;

procedure TFormPuesto.MenuItem5Click(Sender: TObject);
begin
  ShowMessage('Click en el Puesto a modificar...');
end;

procedure TFormPuesto.MenuItem6Click(Sender: TObject);
var
  pst_cdg: string;

begin
  pst_cdg := InputBox('Eliminación de Puesto', 'Ingrese el código del puesto a eliminar', '');

  if pst_cdg <> '' then
  begin
    MainForm.PQConnection1.ExecuteDirect('BEGIN WORK;');
    MainForm.PQConnection1.ExecuteDirect('delete from puesto where pst_cdg = ' + pst_cdg);
    MainForm.PQConnection1.ExecuteDirect('COMMIT WORK;');

    ShowMessage('Operación Exitosa!');

    ordenar_grid();
  end;
end;

procedure TFormPuesto.MenuItem8Click(Sender: TObject);
begin
  pst_nombre := InputBox('Filtro por nombre', 'Ingrese parte del nombre', '');

  if pst_nombre <> '' then
    ordenar_grid
  else
    pst_nombre := '%';
end;

procedure TFormPuesto.MenuItem9Click(Sender: TObject);
begin
  pst_nombre := '%';
  ordenar_grid();
end;

procedure TFormPuesto.FormCreate(Sender: TObject);
begin
  SQLQuery1.DataBase := MainForm.PQConnection1;
  SQLQuery1.Transaction := MainForm.SQLTransaction1;
end;

procedure TFormPuesto.FormShow(Sender: TObject);
begin
  pst_nombre := '%';
  ordenar_grid();
end;

procedure TFormPuesto.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;
end;

procedure TFormPuesto.DBGrid1CellClick(Column: TColumn);
begin
  FormAdminPuesto.Label3.Caption := SQLQuery1.FieldByName('pst_cdg').AsString;
  FormAdminPuesto.Edit1.Text := SQLQuery1.FieldByName('pst_nombre').AsString;
  FormAdminPuesto.Edit2.Text := SQLQuery1.FieldByName('pst_descripcion').AsString;
  FormAdminPuesto.Caption := 'Modificación de puesto...';
  FormAdminPuesto.Button1.Caption := 'Actualizar';

  FormAdminPuesto.ShowModal;

  ordenar_grid();
end;

end.

